package com.wholesmart.web.controller;

import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.wholesmart.common.bean.Message;
import com.wholesmart.common.bean.Page;
import com.wholesmart.mapper.entity.Logger;
import com.wholesmart.service.LoggerService;

/**
 * 日志控制器
 * 
 * <pre>
 * 开发约定：
 * 
 * 1、日志记录由系统生成，不提供新增、修改接口。
 * 
 * 2、提供按时间段删除日志接口，不提供按ID删除日志记录接口。
 * 
 * 3、提供按时间区间导出日志数据接口。
 * </pre>
 * 
 * @author dyw
 * @date 2020年1月9日
 */
@RestController
@RequestMapping("/logger")
public class LoggerController {
	@Autowired
	private LoggerService loggerService;

	/**
	 * 分页条件查询
	 * 
	 * <pre>
	* 有效查询条件包括：用户名（模糊匹配）， 操作时间（区间匹配）， 操作模块（数据字典精准匹配）， 操作类型（数据字典精准匹配）
	* 
	* {"page":{
	*     "pageSize":10,
	*     "currentPage":1,
	*     "orderFile":"id",
	*     "orderType":"asc"
	*         },
	*   "condition"{
	*      "username":"dyw",
	*      "startTime":"2020-01-01",
	*      "endTime":"2020-01-10",
	*      "operaModel":"",
	*      "operaType":""
	*         }
	*   }
	 * </pre>
	 * 
	 * @param params
	 * @return 返回日志数据
	 */
	@PostMapping("/query/page")
	public Message queryPage(@RequestBody Map<String, Object> params) {
		Page<Logger> page = loggerService.getPage(params);
		return Message.success(page);
	}

	/**
	 * 删除指定时间内的日志数据
	 * 
	 * @param startTime 开始时间
	 * @param endTime   结束时间
	 * @return 返回删除日志条数
	 */
	@GetMapping("/deleteBatch")
	public Message deleteLoggers(String startTime, String endTime) {
		int num = loggerService.delLoggers(startTime, endTime);
		return Message.success(num);
	}

	/**
	 * 导出指定时间内的日志数据
	 * 
	 * @param startTime 开始时间
	 * @param endTime   结束时间
	 * @param response  HTTP相应对象
	 * @return 返回导出日志条数
	 */
	@GetMapping("/exportLoggers")
	public Message exportLoggers(String startTime, String endTime, HttpServletResponse response) {
		int num = loggerService.exportLoggers(startTime, endTime);
		return Message.success(num);
	}
}
